import time

from pingtai.mqdemo.mqutils import get_connection

# 获取MQ连接
connection = get_connection()

# 在连接上创建一个频道CHANNEL
channel = connection.channel()

# 声明队列QUEUE
channel.queue_declare(queue='task_queue', durable=True)  # 创建一个新队列task_queue，设置队列持久化，注意不要跟已存在的队列重名，否则有报错

print('[消费者] Waiting for messages. To exit press CTRL+C')


# 定义一个回调函数，用来接收生产者发送的消息
def callback(ch, method, properties, body):
    print("[消费者] Received %r" % body)
    time.sleep(1)
    print("[消费者] Done")
    ch.basic_ack(delivery_tag=method.delivery_tag)  # 接收到消息后会给rabbitmq发送一个确认


channel.basic_qos(prefetch_count=1)  # 消费者给rabbitmq发送一个信息：在消费者处理完消息之前不要再给消费者发送消息

# 开启一个死循环接受MQ消息。
channel.basic_consume(callback,  # 调用回调函数，从队列里取消息
                      queue='task_queue',  # 指定取消息的队列名
                      )

# 开始循环取消息
channel.start_consuming()
